package br.com.ac.fatureweb.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import br.com.ac.fatureweb.integration.billing.FotografiaVO;
import br.com.ac.fatureweb.utilitary.Model;

@Entity
@Table(name = "FOTOGRAFIA")
@SequenceGenerator(name = "SEQ_FOTOGRAFIA", sequenceName = "SEQ_FOTOGRAFIA", allocationSize = 1, initialValue = 1)
public class Fotografia extends Model {

	private static final long serialVersionUID = 7875592651344006234L;

	@Id
	@GeneratedValue(generator = "SEQ_FOTOGRAFIA", strategy = GenerationType.SEQUENCE)
	@Column(name = "ID")
	private Long id;

	@ManyToOne(fetch = FetchType.LAZY, optional = false)
	@JoinColumn(name = "ID_ROTEIRO", referencedColumnName = "ID")
	private Roteiro roteiro;
	
	@Column(name = "COMPETENCIA")
	private Long competencia;
	
	@Column(name = "INSCRICAO")
	private Long inscricao;
	
	@Column(name = "NOME_ARQUIVO")
	private String nomeArquivo;

	public Fotografia() {
		super();
	}

	public Fotografia(FotografiaVO fotografiaVO, Long idRoteiro) {
		super();
		this.roteiro = new Roteiro(idRoteiro);
		this.competencia = fotografiaVO.getCompetencia();
		this.nomeArquivo = fotografiaVO.getNomeArquivo();
		this.inscricao = fotografiaVO.getInscricao();
	}

	/**
	 * @return the id
	 */
	public Long getId() {
		return id;
	}

	/**
	 * @param id the id to set
	 */
	public void setId(Long id) {
		this.id = id;
	}

	/**
	 * @return the roteiro
	 */
	public Roteiro getRoteiro() {
		return roteiro;
	}

	/**
	 * @param roteiro the roteiro to set
	 */
	public void setRoteiro(Roteiro roteiro) {
		this.roteiro = roteiro;
	}

	/**
	 * @return the competencia
	 */
	public Long getCompetencia() {
		return competencia;
	}

	/**
	 * @param competencia the competencia to set
	 */
	public void setCompetencia(Long competencia) {
		this.competencia = competencia;
	}

	/**
	 * @return the inscricao
	 */
	public Long getInscricao() {
		return inscricao;
	}

	/**
	 * @param inscricao the inscricao to set
	 */
	public void setInscricao(Long inscricao) {
		this.inscricao = inscricao;
	}

	/**
	 * @return the nomeArquivo
	 */
	public String getNomeArquivo() {
		return nomeArquivo;
	}

	/**
	 * @param nomeArquivo the nomeArquivo to set
	 */
	public void setNomeArquivo(String nomeArquivo) {
		this.nomeArquivo = nomeArquivo;
	}
}
